const wx2my = require('../../wx2my');

// pages/near_store/near_store.js
const api = require('../../utils/user_api_miniprogram.js');

const app = getApp();
Page({
  data: {
    p: 1,
    page_size: 8,
    is_empty: false,
    hasMoreData: true,
    hiddenLoading: true,
    lng: 0.00,
    //经度
    lat: 0.00,
    //纬度
    hideAuthBtn: true,
    //控制是否显示 手动授权按钮
    postion: true //是否授权, 已授权展示商家列表

  },

  /**
  * 生命周期函数--监听页面显示
  */
  onShow: function () {// 检查当前用户设置权限状态
    // this.check_Authorization();
  },
  onLoad: function (e) {
    console.log(e);
    this.setData({
      lng: e.centerlon,
      lat: e.centerlat
    }); // 获取附近商家列表

    this.getnearbyList(true);
  },

  /**
  * 获取用户当前设置
  */
  check_Authorization: function () {
    var that = this;
    wx2my.getSetting({
      success: res => {
        if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] == true) {
          that.setData({
            postion: true
          }); //获取当前位置

          that.getLocation();
        } else {
          //未授权
          that.setData({
            postion: false
          }); //获取当前位置

          that.getLocation();
        }
      },

      fail(res) {
        console.log(res);
      }

    });
  },

  /**
  * 调用wx.getLocation系统API,获取当前地理位置
  */
  getLocation: function () {
    var that = this; //获取位置

    wx2my.getLocation({
      type: 'gcj02',
      //默认为 wgs84 返回 gps 坐标，gcj02 返回可用于wx.openLocation的坐标
      success: function (res) {
        that.setData({
          postion: true
        }); // 保存经纬度

        that.setData({
          lng: res.longitude,
          lat: res.latitude
        }); // 获取附近商家列表

        that.getnearbyList(true);
      },
      fail: function (e) {
        //首次弹窗提示授权，点击取消后，显示手动授权按钮
        that.setData({
          hideAuthBtn: false
        });
      }
    });
  },
  sortByDistance: function (a, b) {
    console.log(a); // 提取单位

    const unitA = a.d.slice(-2);
    const unitB = b.d.slice(-2); // 距离转换为数值

    const distanceA = parseFloat(a.d);
    const distanceB = parseFloat(b.d); // 如果单位不同，将 m 放在 km 前面

    if (unitA !== unitB) {
      return unitA === 'km' ? -1 : 1;
    } else {
      // 单位相同，则直接比较距离大小
      return distanceA - distanceB;
    }
  },
  getnearbyList: function (type = true) {
    var that = this;
    var params = 'p=' + that.data.p + '&page_size=' + that.data.page_size + '&lng=' + that.data.lng + '&lat=' + that.data.lat; // 发送请求

    app.wxRequest('nearby', {
      'lat': that.data.lat,
      'lng': that.data.lng
    }, function (res) {
      console.log(res);

      if (res.data.code == 1) {
        let markers = that.data.markers;
        let list = res.data.data;
        console.log(list);
        list.sort(function (a, b) {
          // 提取单位
          const unitA = a.d.slice(-2);
          const unitB = b.d.slice(-2); // 距离转换为数值

          const distanceA = parseFloat(a.d);
          const distanceB = parseFloat(b.d); // 如果单位不同，将 m 放在 km 前面

          if (unitA !== unitB) {
            return unitA === 'km' ? 1 : -1;
          } else {
            // 单位相同，则直接比较距离大小
            return distanceA - distanceB;
          }
        }); // list.sort(that.sortByDistance());

        that.setData({
          nearbyListData: list,
          hiddenLoading: true
        }); // if ((datas.length != that.data.page_size) && (datas.length > 0)) {
        //全部加载完成，显示没有更多数据

        that.setData({
          hasMoreData: false,
          hiddenLoading: false
        }); // }
        //  处理显示加载中

        if (list.length == 0) {
          that.setData({
            hiddenLoading: false,
            hasMoreData: false
          });
        }

        if (list.length == 0) {
          that.setData({
            is_empty: true
          });
        }
      } else {
        app.toast(res.data.msg);
      }
    }); // http.getReq("Nearby/nearbyList?" + params, function(res) {
    // }, type)
  },

  /**
  * 查看具体商家信息
  */
  distributionBIZTap: function (e) {
    var that = this; //商家当前id

    var bizid = e.currentTarget.dataset.bizid;
    this.data.nearbyListData.forEach((item, i) => {
      if (item.id == bizid) {
        // 调用打开目标位置（打开地图）
        that.openLocation(item);
      }
    });
  },

  showBigImage(item1) {
    let item = item1.currentTarget.dataset.item;
    console.log(item);
    if (item.device_img == null) return;
    let imgUrl = app.globalData.host + item.device_img;
    wx2my.previewImage({
      urls: [imgUrl],
      //需要预览的图片http链接列表，多张的时候，url直接写在后面就行了
      current: imgUrl,
      // 当前显示图片的http链接，默认是第一个
      success: function (res) {},
      fail: function (res) {},
      complete: function (res) {}
    });
  },

  /**
  * 使用微信内置地图查看商家位置
  */
  openLocation: function (item) {
    var that = this;
    wx2my.getLocation({
      //获取当前经纬度
      type: 'gcj02',
      //返回可以用于wx.openLocation的经纬度，官方提示bug: iOS 6.3.30 type 参数不生效，只会返回 wgs84 类型的坐标信息  
      success: function (res) {
        wx2my.openLocation({
          //使用微信内置地图查看位置。
          latitude: Number(item.lat),
          //目标纬度
          longitude: Number(item.lng),
          //目标经度
          name: item.address,
          //店铺名
          address: item.address //详细地址

        });
      }
    });
  },

  /**
  * 手动授权
  */
  handler: function (e) {
    var that = this;

    if (!e.detail.authSetting['scope.userLocation']) {
      that.setData({
        postion: false
      });
    } else {
      that.setData({
        postion: true
      });
    }
  }
});